home *** CD-ROM | disk | FTP | other *** search
/ Tiger Disk 13 / Tiger_Disk_013_19xx_Tiger-Crew-Disk_de_Side_B.d64 / lektion 5 (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  9KB  |  255 lines

  1. 1 rem*********************************
  2. 2 rem*----------lektion-5------------*
  3. 3 rem*-------------------------------*
  4. 4 rem*----(w)-by-arno-freisinger-----*
  5. 5 rem*-------------------------------*
  6. 6 rem*--------teachmaster------------*
  7. 7 rem*-------------------------------*
  8. 8 rem*********************************
  9. 10 poke 53280, 11: poke 53281 , 11 : print "[155]" : poke 2050 , 1
  10. 15 sys42291 : poke 46 , peek (35) : poke 45 , peek (781) + 2 : clr
  11. 20 print"[147]"tab(15)"teachmaster"
  12. 30 print""tab(09)"(w) by arno freisinger"
  13. 40 print""tab(10)"                    "
  14. 50 for i = 1 to 2000 : next
  15. 60 print"[147]"tab(15)"lektion 5"
  16. 70 for i = 1 to 1000 : next
  17. 80 get a$ : get a$ : get a$
  18. 90 :rem********************************
  19. 100 rem*--------- seite 1 ------------*
  20. 110 rem********************************
  21. 120 print"[147]nach der letzten lektion wissen wir ja"
  22. 130 print"einiges ueber die flags des status-"
  23. 140 print"registers. wir koennen sie auch jetzt"
  24. 150 print"richtig bedienen, da wir ja zu diesem"
  25. 160 print"zweck die befehle kennen. in dieser "
  26. 170 print"lektion soll die richtige anwendung ge-"
  27. 180 print"zeigt werden. da waere das problem mit"
  28. 190 print"der schrittweite. um sie auszurechnen "
  29. 200 print"muessen wir die bytelaenge der einzelnen"
  30. 210 print"befehle kennen. wie sie sich erinnern"
  31. 240 print""tab(14)"taste druecken"
  32. 241 print""tab(18)"-1-"
  33. 242 gosub 250
  34. 243 on a goto 300 , 60
  35. 244 rem********************************
  36. 245 rem*---- taten abfrage -----------*
  37. 246 rem********************************
  38. 250 get a$ : if a$ = "" then 250
  39. 260 if a$ = "z" then a = 2 : return
  40. 270 a = 1 :return
  41. 280 rem********************************
  42. 290 rem*------- seite 2 --------------*
  43. 295 rem********************************
  44. 300 print"[147]darf die schrittweite nicht laenger"
  45. 310 print"als 128 bytes sein, da sonst der sprung"
  46. 320 print"nicht korrekt ausgefuehrt wird!"
  47. 330 print"jetzt aber zu der laenge der einzelnen"
  48. 340 print"befehle. das befehlswort ist immer ein"
  49. 350 print"byte lang. es ergeben sich aber unter-"
  50. 360 print"schiede in der adressierungsart. wir"
  51. 370 print"haben bis zu diesem zeitpunkt drei"
  52. 380 print"verschiedene arten kennengelernt."
  53. 390 print"die direkte[146], sie ist ein byte lang."
  54. 430 print""tab(14)"taste druecken"
  55. 440 print""tab(18)"-2-"
  56. 450 gosub 250 : on a goto 460 , 100
  57. 460 rem********************************
  58. 470 rem*------- seite 3 --------------*
  59. 480 rem********************************
  60. 490 print"[147]die zero-page[146], sie ist auch ein byte"
  61. 500 print"lang. als letztes haben wir die absolute[146]"
  62. 510 print"kennengelernt,sie ist aber 2 bytes lang."
  63. 520 print"d.h.also, ein befehl ist hoechstens drei"
  64. 530 print"bytes lang.befehle, die keine adress-"
  65. 540 print"ierung besitzen (z.b.rts) sind nur ein"
  66. 550 print"byte lang.befehle, die direkt (auch un-"
  67. 560 print"mittelbar genannt) adressiert sind "
  68. 570 print"haben eine laenge von zwei bytes, dies"
  69. 580 print"gilt auch fuer die zero-page adressier-"
  70. 600 print""tab(14)"taste druecken"
  71. 610 print""tab(18)"-3-"
  72. 620 gosub 250 : on a goto 630 , 300
  73. 630 rem********************************
  74. 640 rem*--------- seite 4 ------------*
  75. 650 rem********************************
  76. 660 print"[147]ung.befehle mit absoluter adresse sind"
  77. 670 print"drei bytes lang.                       "
  78. 690 print"ich hoffe, dass sie mir bis           "
  79. 700 print"zu diesem zeitpunkt folgen konnten,"
  80. 710 print"wenn nicht, dann muessen sie sich noch"
  81. 720 print"einmal durch die vorigen lektionen"
  82. 730 print"waelssen. jetzt geht es endlich los"
  83. 740 print"     ldx #$00 ;null ins x-register laden"
  84. 750 print"loop inx      ;x-register um 1 erhoehen"
  85. 760 print"     bne loop ;zurueck zu loop, wenn "
  86. 790 print""tab(14)"taste druecken"
  87. 800 print""tab(18)"-4-"
  88. 810 gosub 250 : on a goto 820 , 460
  89. 820 rem********************************
  90. 830 rem*--------- seite 5 ------------*
  91. 840 rem********************************
  92. 850 print"[147]die letzte erhoehung von x nicht null"
  93. 860 print"war. dies ist die allgemeine schreib-"
  94. 870 print"weise, die jedes normale assemblerpro-"
  95. 880 print"gramm ausfuehrt. hier noch einmal die"
  96. 890 print"form, wie das programm im spreicher "
  97. 900 print"steht."
  98. 910 print"ldx #$00[146]"
  99. 920 print"inx     [146]"
  100. 930 print"bne  $fd[146] ;um drei bytes zurueck, wenn"
  101. 940 print"nicht null. so wuerde das programm aus-"
  102. 980 print""tab(14)"taste druecken"
  103. 990 print""tab(18)"-5-"
  104. 1000 gosub 250 : on a goto 1010 , 640
  105. 1010 rem*******************************
  106. 1020 rem*-------- seite 6 ------------*
  107. 1030 rem*******************************
  108. 1040 print"[147]sehen, wenn sie es disassemblieren "
  109. 1050 print"wuerden (dies ist das sichtbar machen"
  110. 1060 print"eines speicherbereichs). ab jetzt werde"
  111. 1070 print"ich nur noch die gelaeufigere assembler-"
  112. 1080 print"form benutzen. zurueck zu unserem pro-"
  113. 1090 print"gramm. dies ist die erste schleife, die"
  114. 1100 print"sie programmiert haben. sie wird genau"
  115. 1110 print"255-mal durchlaufen. jetzt eine andere"
  116. 1120 print"version, diese schleife wird 256-mal"
  117. 1130 print"durchlaufen."
  118. 1140 print""tab(14)"taste druecken"
  119. 1150 print""tab(18)"-6-"
  120. 1160 gosub 250  : on a goto 1170 , 820
  121. 1170 rem*******************************
  122. 1180 rem*-------- seite 7 ------------*
  123. 1190 rem*******************************
  124. 1200 print"[147]     ldx #$00 ;null laden"
  125. 1210 print"loop dex      ;x-register -1
  126. 1220 [153]"     bne loop ;wenn groesser 0,dann loop"
  127. 1230 [153]"dieses programm zieht immer eins vom"
  128. 1240 [153]"x-register ab, so erreichen sie eine"
  129. 1250 [153]"durchlaufzahl von 256. jetzt wollen wir"
  130. 1260 [153]"einmal basic mit maschinensprache ver-"
  131. 1270 [153]"gleichen. dazu eine schleife, die "
  132. 1280 [153]"65536-mal durchlaufen wird, hier merken"
  133. 1290 [153]"wir das erste mal den unterschied."
  134. 1300 [153]""[163]14)"taste druecken"
  135. 1310 [153]""[163]18)"-7-"
  136. 1320 [141] 250 : [145] a [137] 1330 , 1010
  137. 1330 [143]*******************************
  138. 1340 [143]*-------- seite 8 ------------*
  139. 1350 [143]*******************************
  140. 1360 [141] 10000
  141. 1365 [153]"load      ldx #$00 ;x-reg. null laden"
  142. 1370 [153]"loop1 ldy #$00 ;y-reg. null laden"
  143. 1380 [153]"loop2 dey      ;y=y-1  "
  144. 1390 [153]"      bne loop2;wenn y <> 0 dann loop2"
  145. 1400 [153]"      dex      ;x=x-1
  146. 1410 print"      bne loop1;wenn x <> 0 dann loop1"
  147. 1420 print"      rts      ;zurueck ins basic"
  148. 1430 print"druecken sie eine taste, dann wird das"
  149. 1440 print"programm gestartet."
  150. 1450 gosub 250
  151. 1460 sys 828
  152. 1470 print"fertig ! haben sie etwas bemerkt ?"
  153. 1471 print""tab(14)"taste druecken"
  154. 1472 print""tab(18)"-8-"
  155. 1473 gosub 250 : on a goto 1475 , 1170
  156. 1475 rem*******************************
  157. 1480 rem*-------- seite 9 ------------*
  158. 1490 rem*******************************
  159. 1500 print"[147]wenn sie zuviel zeit haben,koennen sie"
  160. 1510 print"es auch einmal in basic ausprobieren,"
  161. 1520 print"dazu brauchen sie aber ein bischen"
  162. 1530 print"geduld, da eine solche schleife in basic"
  163. 1540 print"mindestens 10 min. dauert. ich habe es"
  164. 1550 print"nicht ausprobiert, weil ich nicht"
  165. 1560 print"so viel zeit habe. zum schluss dieser"
  166. 1570 print"lektion wollen wir noch ein groesseres"
  167. 1580 print"schleifenprogramm schreiben."
  168. 1590 print"noch ein paar grundlagen dazu."
  169. 1610 print""tab(14)"taste druecken"
  170. 1620 print""tab(18)"-9-"
  171. 1630 gosub 250 : on a goto  1650 , 1330
  172. 1640 rem*******************************
  173. 1650 rem*------- seite 10 ------------*
  174. 1660 rem*******************************
  175. 1665 gosub 10100 : restore
  176. 1670 print"[147]der mikroprozessor zerlegt werte,"
  177. 1680 print"die groesser sind als 255 in"
  178. 1690 print"ein lo-und ein hi-byte. beachten sie"
  179. 1700 print"die reihenfolge ! angenommen wir haben"
  180. 1710 print"die zahl $d010, dann sieht das so aus"
  181. 1720 print"$10 (lo-byte) $d0 (hi-byte)."
  182. 1730 print"so,jetzt weiter mit unseren schleifen."
  183. 1740 print"die nachfolgende schleife wird"
  184. 1750 print"";256^2*256;"durchlaufen. ein basic-"
  185. 1760 print"programm braucht dazu fast einen tag."
  186. 1770 print""tab(14)"taste druecken"
  187. 1780 print""tab(17)"-10-"
  188. 1790 gosub 250 : on a goto 1800 , 1475
  189. 1800 rem*******************************
  190. 1810 rem*------- seite 11 ------------*
  191. 1820 rem*******************************
  192. 1830 print"[147]wir brauchen dazu ca. 2 min.,dies macht"
  193. 1840 print"ihnen den zeitunterschied deutlich."
  194. 1850 print"      lda #$00 ;akku = 0"
  195. 1860 print"      sta  $02 ;nach speicherstelle 2"
  196. 1870 print"loop1 ldx #$00 ;x-reg.= 0"
  197. 1880 print"loop2 ldy #$00 ;y-reg.= 0"
  198. 1890 print"loop3 dey      ;y = y -1"
  199. 1900 print"      bne loop3;wenn <> 0 dann loop3 "
  200. 1910 print"      dex      ;x = x - 1"
  201. 1920 print"      bne loop2;wenn <> 0 dann loop2"
  202. 1930 print"      dec  $02 ;speicherst.(2)=(2)-1"
  203. 1940 print"      bne loop1;wenn <> 0 dann loop1"
  204. 1950 print"      rts      ;zurueck ins basic"
  205. 1960 print"dies ist das programm zur 16 mill."
  206. 1970 print""tab(14)"taste druecken"
  207. 1980 print""tab(17)"-10-"
  208. 1990 gosub 250 : on a goto 2000 , 1640
  209. 2000 rem*******************************
  210. 2010 rem*-------- seite 11 -----------*
  211. 2020 rem*******************************
  212. 2030 print"[147]schleife. wenn sie eine taste druecken,"
  213. 2040 print"dann startet das programm. sie muessen"
  214. 2050 print"ca. 2 min. warten."
  215. 2060 sys 828 : get a$ : get a$ : get a$
  216. 2070 print"fertig. dies war es erstmal zum thema"
  217. 2080 print"schleifen. in der naechste folge lernen"
  218. 2090 print"wir wieder eine ganze menge befehle,und"
  219. 2100 print"unsere themen werden auch wieder etwas"
  220. 2110 print"einfacher. noch ein kleiner hinweis :"
  221. 2120 print"wenn sie sich jetzt hinsetzen und ein"
  222. 2130 print"programm schreiben, dann koennen sie es"
  223. 2140 print"mit dem sys-befehl starten."
  224. 2150 print""tab(14)"taste druecken"
  225. 2160 print""tab(17)"-11-"
  226. 2170 gosub 250 : on a goto 2180 , 1800
  227. 2180 rem*******************************
  228. 2190 rem*------ seite 12 -------------*
  229. 2200 rem*******************************
  230. 2210 print"[147]geben sie jetzt wieder ihr geraet ein"
  231. 2220 a$ = "" : input "d[146] oder f[146]"; a$
  232. 2230 if a$ = "d" then f=1 : goto 2300
  233. 2235 if a$ = "z" then goto  2000
  234. 2240 if a$ = "f" then f=8 : goto 2300
  235. 2245 if a$ = "" then end
  236. 2250 goto 2220
  237. 2300 poke 2 , f : poke 46,8 : poke45,3 :poke 2050 ,0:load "lektion 6" , peek(2)
  238. 9999 end
  239. 10000 x = 0 : restore
  240. 10010 read a
  241. 10020 if a = -1 then 10060
  242. 10030 poke 828 + x , a
  243. 10040 x = x + 1
  244. 10050 goto 10010
  245. 10060 return
  246. 10100 x = 0
  247. 10110 read a
  248. 10120 if a = -1 then 10160
  249. 10130 poke 828 + x , a
  250. 10140 x = x + 1
  251. 10150 goto 10110
  252. 10160 return
  253. 20000 data162,0,160,0,136,208,253,202,208,248,96,-1
  254. 32000 data169,0,133,2,162,0,160,0,136,208,253,202,208,248,198,2,208,242,96,-1,-1
  255.